package base

import (
	"fmt"
	"math"
	"reflect"
)

func NumTest() {
	//64位操作系统，int占用64位
	defaultInt := 1
	fmt.Println(defaultInt, reflect.TypeOf(defaultInt))

	var int64Val int64 = 1
	fmt.Println(int64Val, reflect.TypeOf(int64Val))
	//无法直接将int65的变量值直接赋值给int变量，需要类型转换
	//defaultInt = int64Val
	//-9223372036854775808 9223372036854775807
	fmt.Println(math.MinInt, math.MaxInt)
	fmt.Println(math.MinInt64, math.MaxInt64)
	//18446744073709551615
	fmt.Println("uint最大值", uint(math.MaxUint))
	fmt.Println("uint64最大值", uint64(math.MaxUint64))

	var f32Num float32 = 3.1
	var f64Num float64 = 3.2
	fmt.Println(f32Num, reflect.TypeOf(f32Num))
	fmt.Println(f64Num, reflect.TypeOf(f64Num))
	//float64无法直接和float32进行运算，需要类型转换
	fsum := f64Num + float64(f32Num)
	//结果是 6.2999999046325685 ，类型转换后存在精度损失
	fmt.Println(fsum)
	//都使用float64 就不会出现精度损失
	fmt.Println(3.1 + 3.2)

	fmt.Println(reflect.TypeOf(defaultInt), reflect.TypeOf(defaultInt).Kind() == reflect.Int)
}
